package com.gxa.modules.pc.hospital.service;

import com.gxa.common.utils.Result;
import com.gxa.common.utils.TPage;
import com.gxa.modules.model.dto.DepartmentDTO;
import com.gxa.modules.model.dto.ParkDTO;
import com.gxa.modules.model.entity.hospital.Department;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxa.modules.model.vo.ScheduleVO;
import com.gxa.modules.model.vo.WaitVO;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 科室表 服务类
 * </p>
 *
 * @author zhuiyi
 * @since 2022-11-13 05:39:52
 */
public interface DepartmentService extends IService<Department> {
    /**
     * 分页多条件查询单表
     *
     * @param searchMap
     * @return
     */
    TPage queryByPage(Map<String, Object> searchMap);

    /**
     * 新增一个
     *
     * @param dto
     * @return
     */
    boolean saveOne(DepartmentDTO dto);

    /**
     * 更新一个
     *
     * @param dto
     * @return
     */
    boolean updateOne(DepartmentDTO dto);


    /**
     * app 获取 大科室名称
     *
     * @return
     */
    Set<String> getBigNames();

    /**
     * app 获取 app 科室信息
     *
     * @param partId
     * @param bigName
     * @return
     */
    List<Department> getDeparments(Integer partId, String bigName);

    /**
     * app h获取 app 医生信息
     *
     * @param
     * @param day
     * @return
     */
    Result getDoctors(String departmentName, String day);

    /**
     * app 获取 园区列表
     * @return
     */
    List<ParkDTO> getPartList();

    /**
     *获取大于等于今天的该医生的排班信息
     * @param doctorId
     * @return
     */
    List<ScheduleVO> getDoctorSchedule(String doctorId);

    /**
     * 获取候诊信息
     * @param userId
     * @return
     */
    List<WaitVO> getWaitFromDoctor(Integer userId);

    int randomUpdate(Integer appointId);
}
